//package com.Cychat.doctor.config;
//
//import org.springframework.amqp.core.Binding;
//import org.springframework.amqp.core.BindingBuilder;
//import org.springframework.amqp.core.Queue;
//import org.springframework.amqp.core.TopicExchange;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
///**
// * Auther: 谢宝辉  <br/>
// * Date: 2025/11/5:15:37  <br/>
// * Description: 主题交换机配置类，用于配置医院向量化队列、医生向量化队列
// * 主题交换机配置类：配置交换机、队列、绑定关系（支持医院/医生多路由）
// */
//@Configuration
//public class TopicMQConfig {
//    // ===================== 通用交换机常量 =====================
//    /** 向量处理主题交换机（通用型，支持所有向量相关路由） */
//    public static final String VECTOR_TOPIC_EXCHANGE = "vector_topic_exchange";
//
//    // ===================== 医院相关队列/路由键常量 =====================
//    /** 医院待向量化队列（明确业务语义：待处理的向量化任务） */
//    public static final String HOSPITAL_VECTOR_PENDING_QUEUE = "hospital.vector.pending.queue";
//    /** 医院向量化路由键（支持通配符，后续扩展子业务如：hospital.vector.save/update/delete） */
//    public static final String HOSPITAL_VECTOR_ROUTING_KEY = "hospital.vector.#";
//
//    // ===================== 医生相关队列/路由键常量 =====================
//    /** 医生待向量化队列 */
//    public static final String DOCTOR_VECTOR_PENDING_QUEUE = "doctor.vector.pending.queue";
//    /** 医生向量化路由键 */
//    public static final String DOCTOR_VECTOR_ROUTING_KEY = "doctor.vector.#";
//
//    // 1. 定义通用主题交换机（持久化、不自动删除）
//    @Bean
//    public TopicExchange vectorTopicExchange() {
//        // 使用常量定义，避免硬编码；durable=true：持久化；autoDelete=false：不自动删除
//        return new TopicExchange(VECTOR_TOPIC_EXCHANGE, true, false);
//    }
//
//    // 2. 医院待向量化队列（持久化、不排他、不自动删除）
//    @Bean
//    public Queue hospitalVectorPendingQueue() {
//        return new Queue(HOSPITAL_VECTOR_PENDING_QUEUE, true, false, false);
//    }
//
//    // 3. 医生待向量化队列（同上）
//    @Bean
//    public Queue doctorVectorPendingQueue() {
//        return new Queue(DOCTOR_VECTOR_PENDING_QUEUE, true, false, false);
//    }
//
//    // 4. 绑定：医院队列 ↔ 通用交换机（路由键匹配医院相关）
//    @Bean
//    public Binding hospitalVectorBinding(Queue hospitalVectorPendingQueue, TopicExchange vectorTopicExchange) {
//        // 队列、交换机、路由键均使用常量，确保一致性
//        return BindingBuilder.bind(hospitalVectorPendingQueue)
//                .to(vectorTopicExchange)
//                .with(HOSPITAL_VECTOR_ROUTING_KEY);
//    }
//
//    // 5. 绑定：医生队列 ↔ 通用交换机（路由键匹配医生相关）
//    @Bean
//    public Binding doctorVectorBinding(Queue doctorVectorPendingQueue, TopicExchange vectorTopicExchange) {
//        return BindingBuilder.bind(doctorVectorPendingQueue)
//                .to(vectorTopicExchange)
//                .with(DOCTOR_VECTOR_ROUTING_KEY);
//    }
//}
